import logging
from flask import request, jsonify
from user.wechat_service import wechat_service
from user.vip_service import vip_service
from user import userservice

# 获取当前模块的日志记录器
logger = logging.getLogger(__name__)

def init_user_routes(app):
    """
    初始化认证相关路由
    """
    
    @app.route('/wechat/login', methods=['POST'])
    def wechat_login():
        """
        微信登录接口
        接收参数：
        - code: 微信授权码
        """
        logger.info("收到微信登录请求")
        
        data = request.get_json()
        if not data or 'code' not in data:
            logger.warning("微信登录请求缺少授权码参数")
            return jsonify({
                'error': '请提供微信授权码',
                'example': {
                    'code': '微信授权码'
                }
            }), 400
        
        code = data['code']
        logger.info(f"开始处理微信登录，授权码: {code[:10]}...")  # 只记录前10位，保护隐私
        
        try:
            # 使用微信服务进行登录
            login_result = wechat_service.login_with_code(code)
            
            logger.info("微信登录成功")
            return jsonify({
                'success': True,
                'message': '登录成功',
                'data': login_result
            })
            
        except Exception as e:
            logger.error(f"微信登录失败: {str(e)}", exc_info=True)
            return jsonify({
                'success': False,
                'error': '微信登录失败',
                'message': str(e)
            }), 500 

    
    @app.route('/user/vip', methods=['GET'])
    def user_vip_summary():

        source = request.args.get('source')
        source_id = request.args.get('source_id')
        user_id = userservice.get_user_by_source_id(source_id, source)
        
        if user_id is None:
            return jsonify({
                'error': '请先登录',
                'message': '请先登录, 联系管理员'
            }), 400
        try:
            
            user_vip_summary = vip_service.get_user_summary(user_id)
            
            return jsonify({
                'success': True,
                'message': '登录成功',
                'data': user_vip_summary
            })
            
        except Exception as e:
            logger.error(f"获取用户vip信息失败: {str(e)}", exc_info=True)
            return jsonify({
                'success': False,
                'error': '执行失败',
                'message': str(e)
            }), 500 